package day8;

import java.io.File;
import java.io.IOException;
import org.junit.Test;


public class FileDemo2 {

    /*
     判断功能的方法
    public boolean exists() ：此File表示的文件或目录是否实际存在。
    public boolean isDirectory() ：此File表示的是否为目录。
    public boolean isFile() ：此File表示的是否为文件
     */
    @Test
    public void test() {
        File file = new File("E:\\GZ2148班上课资料\\JAVASE\\day1\\code");
        System.out.println("file路径是否存在:" + (file.exists() == true ? "存在":"不存在"));
        System.out.println("file是目录吗:" + (file.isDirectory() == true ? "是":"不是"));
        System.out.println("file是文件吗:" + (file.isFile() == true ? "是":"不是"));
    }

    /*
     创建删除功能的方法
    public boolean createNewFile() ：当且仅当具有该名称的文件尚不存在时，创建一个新的空文件。
    public boolean delete() ：删除由此File表示的文件或目录。
    public boolean mkdir() ：创建由此File表示的目录。
    public boolean mkdirs() ：创建由此File表示的目录，包括任何必需但不存在的父目录。
     */
    @Test
    public void test2() throws IOException {
        //创建file实例
        File file = new File("E:\\GZ2148班上课资料\\JAVASE\\day1\\code\\a.txt");

        //创建一个新文件
        file.createNewFile();

        //创建临时文件
        File file2 = new File("E:\\GZ2148班上课资料\\JAVASE\\day1\\code");
        // 第一个参数是前缀，第二个是后缀，第三个是要在哪个路径下创建
        File.createTempFile(System.currentTimeMillis()+"", ".txt",file2);
        // java教程.api <-- 改名字

        //删除a.txt
        file.delete();//这是个文件 ，可以直接删除

        //删除文件夹 这个文件必须是空的才能删除
        File file3 = new File("E:\\GZ2148班上课资料\\JAVASE\\day1\\code2 - 副本");
        file3.delete();

        //创建新的文件夹
        File file4 = new File("E:\\GZ2148班上课资料\\JAVASE\\day1\\code3");
        //创建文件夹时，上级路径必须是存在
        file4.mkdir();

        File file5 = new File("E:\\GZ2148班上课资料\\JAVASE\\day1\\test\\code4");
        //boolean isCreateSuccess = file5.mkdir();

        //使用mkdirs:这时如果上级路径不存在，那么先创建上级路径 ，再创建目的文件夹
        boolean isCreateSuccess = file5.mkdirs();
        System.out.println("创建成功？" + isCreateSuccess);
    }

    /*
     * public String[] list() ：返回一个String数组，表示该File目录中的所有子文件或目录。
       public File[] listFiles() ：返回一个File数组，表示该File目录中的所有的子文件或目录
     */
    @Test
    public void test3() {
        File file = new File("E:\\GZ2148班上课资料\\JAVASE\\day1\\code");
        //获取的是该文件夹下所有的字符串路径
        String[] list = file.list();
        for (String name : list) {
            System.out.println(name);
        }

        System.out.println("-----------------");

        //获取的是文件数组
        File[] listFiles = file.listFiles();
        for (File f : listFiles) {
            System.out.println(f);
        }
    }
}
